home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Moscow ML 1.31 / source code / mosml / src / runtime / major_gc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-03  |  1.1 KB  |  49 lines  |  [TEXT/R*ch]

  1. #ifndef _major_gc_
  2. #define _major_gc_
  3.  
  4.  
  5. #include "freelist.h"
  6. #include "misc.h"
  7.  
  8. typedef struct {
  9.   asize_t size;
  10.   char *next;
  11. } heap_chunk_head;
  12.  
  13. extern int gc_phase;
  14. extern unsigned long allocated_words;
  15. extern unsigned long extra_heap_memory;
  16.  
  17. #define Phase_mark 0
  18. #define Phase_sweep 1
  19.  
  20. extern char *heap_start;
  21. extern char *heap_end;
  22. extern unsigned long total_heap_size;
  23. extern char *page_table;
  24. extern asize_t page_table_size;
  25. extern char *gc_sweep_hp;
  26.  
  27. #define In_heap 1
  28. #define Not_in_heap 0
  29. #ifndef SIXTEEN
  30. #define Page(p) (((addr) (p) - (addr) heap_start) >> Page_log)
  31. #define Is_in_heap(p) \
  32.   ((addr)(p) >= (addr)heap_start && (addr)(p) < (addr)heap_end \
  33.    && page_table [Page (p)] == In_heap)
  34. #else
  35. #define Page(p) \
  36.   (((unsigned long)(p) >> (16 + Page_log - 4)) + ((unsigned)(p) >> Page_log))
  37. #define Is_in_heap(p) (page_table [Page (p)] == In_heap)
  38. #endif
  39.  
  40. void init_major_heap P((asize_t));
  41. asize_t round_heap_chunk_size P((asize_t));
  42. void darken P((value));
  43. void major_collection_slice P((void));
  44. void major_collection P((void));
  45. void finish_major_cycle P((void));
  46.  
  47.  
  48. #endif /* _major_gc_ */
  49.